Many systems have recently been used that execute a wide variety of kinds of processing by assigning respective functions to a plurality of communication devices connected via communication lines and causing the plurality of communication devices to cooperate with one another. For example, in the field of in-vehicle LANs (Local Area Networks) that are installed in vehicles, such a system realizes a wide variety of functions by employing ECUs (Electronic Control Units) as communication devices and causing the ECUs to perform specific kinds of processing to which the ECUs are respectively tailored and exchange messages with one another.
For example, in an in-vehicle communication system based on the CAN (Controller Area Network) communication protocol (hereinafter also simply referred to as “protocol”), the number of ECUs that can be connected to a single communication line is limited, and the communication speed varies depending on the role of each ECU. Therefore, a configuration is often adopted in which ECUs are divided into a plurality of groups and a plurality of ECUs in each group are connected to a single communication line in advance, and messages sent among the plurality of communication lines are relayed by a relay device (gateway).
The relay device realizes the relay processing by identifying frames received from the ECUs based on message IDs, for example; referencing, using the message IDs used for identification as a search key, a relay information table for judging whether or not the frames need to be relayed and specifying communication lines serving as relay destinations; and transmitting frames that should be relayed, from communication lines that have been specified as relay destinations. If the number of ECUs to be relayed increases, or the traffic temporarily increases, the performance of relay processing of the relay device may significantly decrease.
Thus, various methods for preventing a decrease in the communication quality or increasing the speed of relay processing, by providing the relay device with a QoS (Quality of Service) function, have been proposed. For example, JP 2009-225441A discloses a gateway device that efficiently searches for a memory area that stores data to be transmitted, from an ID-based buffer that is partitioned into memory areas for respective IDs each indicating a transmission source of frame data. This device is provided with index flags indicating the update status of respective groups, each of which includes a plurality of update flags indicating whether or not data in the memory area is updated. The device is configured to first search the index flags and then search the update flags to search for a memory area that stores data to be transmitted.
JP 2000-244570A discloses a relay device that stores a packet received from a communication line via a network interface unit in a packet buffer and stores header information of the packet in a quickly-accessible header RAM to deter contention between a reading process and a writing process with respect to the header RAM, thereby achieving high-speed routing while guaranteeing a certain level of communication quality (QoS).
Moreover, JP 2001-211203A discloses a network relay device that improves the performance of relay processing by adopting a configuration in which a routing processor that searches for transfer destinations of packets from header information of the packets and transfers the packets is provided with a plurality of packet transfer units that execute the transfer of packets, and received packets are assigned to the packet transfer units on a packet-by-packet basis. Furthermore, JP 2006-352235A discloses a gateway that can increase the processing speed and ensure a certain level of communication quality by adopting a configuration in which the gateway includes, for each of a plurality of networks, a protocol controller that performs control processing of a communication protocol, a search engine that acquires information corresponding to an ID of a frame processed by the protocol controller from a destination search table, and a frame converter, and performs autonomous relay processing by hardware.